const wordBreak = (s, wordDict) => {
  let dp = new Array(s.length+1).fill(false) // dp[i]表示下标为i前面的字符串是不是可以由数组里面的字符串拼接形成
  dp[0] = true // 这个是为了后面的计算设置的
  for(let i = 0;i <= s.length;i++){
    // 遍历背包
    for(let j = 0;j < wordDict.length;j++){
      // 遍历字符串数组 也就是遍历这个重量
      if(i >= wordDict[j].length){
        // 如果当前的下标大于这个元素的长度的话 比如下标为1 其实时这个背包的容量为1 也就是这个数组元素的长度可以为1
        // console.log(s.slice(i-wordDict[j].length,i));
        // 截取的时候是从当前的i值截取当前的j的长度这个位置开始截取 也就是截取掉这个长度后面的值判断是不是在数组里面
        // 如果i-这个数组元素的长度的位置是true 并且这个截取的字段是数组的字段 就让这个是true 因为是遍历所有这个字段都可以遍历到
        if(dp[i-wordDict[j].length] && s.slice(i-wordDict[j].length,i) === wordDict[j]){
          dp[i] = true
        }
      }
    }
  }
  return dp[s.length]
}